【小ネタ】AWS Python SDK(boto3)からアカウントID・リージョン情報を取得する
AWSのリクエスト先のアカウントID・リージョン情報を取得する必要がありました。 調査結果を共有します。
アカウントIDを取得
STS の get-caller-identity
API を利用します。
In [2]: import boto3 In [3]: boto3.client('sts').get_caller_identity() Out[3]: {u'Account': '123456789012', u'Arn': 'arn:aws:iam::123456789012:user/dummy', 'ResponseMetadata': {'HTTPHeaders': {'content-length': '412', 'content-type': 'text/xml', 'date': 'Thu, 08 Feb 2018 18:15:54 GMT', 'x-amzn-requestid': '1a93dda2-0cfc-11e8-82bf-19ff9093cb87'}, 'HTTPStatusCode': 200, 'RequestId': '1a93dda2-0cfc-11e8-82bf-19ff9093cb87', 'RetryAttempts': 0}, u'UserId': 'DUMMY'} In [4]: boto3.client('sts').get_caller_identity().get('Account') Out[4]: '123456789012'
この API は AWS CLI からも利用可能です。
$ aws sts get-caller-identity { "Account": "123456789012", "UserId": "DUMMY:i-DUMMY", "Arn": "arn:aws:sts::123456789012:assumed-role/dummy-ec2/i-DUMMY" }
過去ににしざわがブログで紹介しております。
リージョン情報を取得
リージョン情報はセッション情報経由で取得します。
In [5]: boto3.session.Session() Out[5]: Session(region_name='ap-northeast-1') In [6]: boto3.session.Session().region_name Out[6]: 'ap-northeast-1'